<?php
/**
 * View_Form_TradersSending
 *
 * Класс View_Form_TradersSending отвечает за вывод информации, связанной с отправкой торговцев
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Form_TradersSending extends View_Form_Coordinates {
	
	/**
	 * Выводит непосредственно форму 
	 * 
	 * @param array $tradersAvailableToGo - доступное к отправке количество торговцев
	 */
	function show($tradersAvailableToGo) {
		$objForm = new Form_ViewForm(array(
				'errorIfExists' => true,
				'leftWidth' => 200,
				'helpUnderField' => true
		), $this);
		$objForm->show();
		$arrModelNames = array('View_Form_TradersSending','resources');
		$objGeneral = Game_General::instance();
		foreach ($objGeneral->objPlace->objResourcesWithProduction->getResourcesData() as $resourceId => $resourceValue) {
			
			$objForm->textField(
					array(
							'modelNames' => $arrModelNames,
							'maxlength' => 5,
							'text' => Game_Resource::getResourceName($resourceId),
							'help' => ' / ' . (min($resourceValue, $tradersAvailableToGo * Game_Building_Market::getOneTraderMaxResources())),
							'disabled' => $resourceValue == 0
					),
					$resourceId
			);
		}
	/*
		foreach ($arrAllUnits as $unitId => $arrUnitInfo) {
			$objUnit = new Game_Unit($unitId);
			$objForm->textField(
				array(
					'modelNames' => $arrModelNames, 
					'maxlength' => 3, 
					'text' => $objUnit->getName(),
					'help' => ' / ' . (isset($arrUnitsAvailableToGo[$unitId]) ? $arrUnitsAvailableToGo[$unitId] : 0),
					'disabled' => empty($arrUnitsAvailableToGo[$unitId])
				), 
				$unitId
			);
		}
		$objForm->selectField(
				array(
						//'modelNames' => $arrModelNames,
						'text' => 'Тип',
						'optionsArray' => Game_Event_UnitsMove::$availableMoveTypesWithNames
				),
				'move_type'
		);*/
		$this->_showCoordinatesBlock($objForm);
		
		$objForm->submitButton(array(), 'save');
		$objForm->close();
	}
	
	/**
	 * (non-PHPdoc)
	 * @see ActiveRecord::validation()
	 */
	public function validation($validationType, $arrAdditionalSettings = array()) {
		
		//$this->validatesInclusionOf['move_type'] = array('available' => Game_Event_UnitsMove::$availableMoveTypes, 'message' => 'неверно выбран тип перемещени', 'on' => 'create');
		parent::validation($validationType, $arrAdditionalSettings = array());
	}
	
	
	/**
	 * Получает количество ресурсов, которые будут отправлены
	 *
	 * @param int $tradersAvailableToGo - доступное к отправке количество торговцев
	 * 
	 * @return Game_Resource
	 */
	public function getResourcesToGo($tradersAvailableToGo) {
		$totalResourcesAvailableToGo = $tradersAvailableToGo * Game_Building_Market::getOneTraderMaxResources();
		$objResources = new Game_Resource($this->tableFields['resources']);
		$resourcesWantToSend = $objResources->getResourcesSum();
		$fieldToShowError = null;
		if ($resourcesWantToSend <= 0) $this->errorValidated($fieldToShowError, array(), Service_Translate::getText('Вы должны выбрать ресурсы для отправки'));
		if ($resourcesWantToSend > $totalResourcesAvailableToGo) $this->errorValidated($fieldToShowError, array(), Service_Translate::getText('У вас недостаточно торговцев для отправки такого количества ресурсов'));
		return $objResources;
	}

}
?>